#ifndef EXCHANGE_MATRIX_H
#define EXCHANGE_MATRIX_H


#include <array>

namespace AMCAX::Exchange
{
        /// @brief
        class ExchangeMatrix
        {
        public:
            /// @brief Default matrix. Will use identity transform.
            ExchangeMatrix() = default;

            ExchangeMatrix(double orientation[3][3], double origin[3]);

            std::array<std::array<double, 3>, 3> GetOrientation() const;

            std::array<double, 3> GetOrigin() const;

            ExchangeMatrix LeftMultiply(const ExchangeMatrix &other) const;

        private:
            std::array<std::array<double, 3>, 3> orientation_ = {0};
            std::array<double, 3> origin_ = {0};
        };
}

#endif // EXCHANGE_INTEROP_MATRIX_H